<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h1>这是app模板</h1>
      <!-- 3.使用组件 -->
      <xxx></xxx>
    </div>
    <div id="root">
      <h1>这是root模板</h1>
      <!-- 使用组件 -->
      <xxx></xxx>
      <testAaa></testAaa>
      <p>1234</p>
    </div>

    <script src="./vue.js"></script>
    <script>
      // 1. 定义组件
      // 完整写法: Vue.extend(配置对象)
      const tip = Vue.extend({
        // template是组件的结构. 千万不要在组件中写el
        template: '<h2>{{ message }}</h2>',
        // data是组件的数据,但是必须写函数
        data() {
          return {
            message: 'hello component',
          }
        },
      })
      // 简写:
      const test = {
        template: '<p>{{message}}</p>',
        data() {
          return {
            message: 'test',
          }
        },
      }

      // 2. 注册组件
      // 全局注册,在任何模板,任何组件中都可以使用
      Vue.component('xxx', tip) //注意:注册组件时第一个参数决定了组件名

      new Vue({
        el: '#app',
      })
      new Vue({
        el: '#root',
        // 2. 布局注册组件,只能在root模板中使用
        components: {
          testAaa: test,
        },
      })
    </script>
  </body>
</html>
